class Base {
    constructor() {
        "use strict";
        this.baseRestUrl = 'https://www.xzwbfuwu.cn/wx/';
        // this.baseRestUrl = 'http://localhost:8081/wx/';

        
        //this.onPay=Config.onPay;
    }

    //http 请求类, 当noRefech为true时，不做未授权重试机制
    //只进行一次重试后，再重试_refetch()再次调用该方法时传true，不再重试。
    request(params, noRefetch) {

        var that = this,
            url=this.baseRestUrl + params.url;
        if(!params.type){
            params.type='post';
        }
        /*不需要再次组装地址*/
        if(params.setUpUrl==false){
            url = params.url;
        }
        if(!params.data){
          params.data={"version":5}
        }else{
          params.data.version=5;
        }

        wx.request({
            url: url,
            data: params.data,
            method:params.type,
            header: {
                //'content-type': 'application/json',
                "Content-Type": "application/x-www-form-urlencoded",
                'token': wx.getStorageSync('token')
            },
            success: function (res) {

                if (typeof (res.data.code) != "undefined") {
                    if (res.data.code ==200) {
                        //成功
                        var d=res.data.data;
                        params.sCallback && params.sCallback(d);
                        return;
                    }else{
                        that.showmsg(res.data.msg);
                    }
                }else{
                    that.showmsg('请求失败');
                }

                //若有 失败回调，通过error_code进行业务判断
                params.eCallback && params.eCallback(res_data);



            },
            fail: function (err) {
                params.eCallback && params.eCallback(err);
            }
        });
    }
    _failRequest(res_data){
      this.showmsg(res_data.msg);
    }
    _processError(err){
    }

    _refetch(param) {
        var token = new Token();
        token.getTokenFromServer((token) => {
            this.request(param, true);
        });
    }

    /*获得元素上的绑定的值*/
    getDataSet(event, key) {
        return event.currentTarget.dataset[key];
    }
    checkLogin(param){
        var userInfo=wx.getStorageSync('userInfo');
        if(!userInfo){
            wx.navigateTo({
                url: '/pages/login/login'
            })
        }else{
            return userInfo;
        }
    }
    getUserInfo(){
        var userInfo=wx.getStorageSync('userInfo');
        return userInfo;
    }
    setUserInfo(userinfo){
        wx.setStorageSync('userInfo',userinfo);
    }
    showmsg(msg)
    {
        wx.showToast({
            title: msg,
            icon: 'none',
            duration: 2000
        })
        return;
    }
    jsonToObj(str) {
      if (typeof str == 'string') {
        try {
          var obj = JSON.parse(str);
          if (typeof obj == 'object' && obj) {
            return obj;
          } else {
            return {};
          }
        } catch (e) {
          return {};
        }
      }
      return {}
    }

};

export {Base};
